Import z Excel

Otázka od: Jan Sebelik

7. 9. 2004 10:50

Delam v Delphi import z Excel.
Zaboha se mi nedari Excel po skonceni importu zavrit.
Zustane viset v TaskManager.
Samozrejme tam mam "finally Excel := NULL"

Honza
====================================
= RNDr. Jan Sebelik - HAES
= Skolici a konzultacni stredisko pro vyvoj SW
= www.haes.cz
= Vojtiskova 321
= 507 81 Lazne Belohrad
= tel. 493 792 569 (mobil 776 347 735)
====================================


Odpovedá: Lasevic, Martin

7. 9. 2004 11:00

Ahoj,

Zkus ten Excel dat do nejakeho non-visible formu, ktery pak
shodis......pokud jej mas na MainFormu, tak se Excel shodi az po ukonceni
aplikace......delalo mi to jak na MSO 2K, tak na MSO 2k3

Martin Lasevic

> -----Original Message-----
> From: Jan Sebelik [mailto:honza@haes.cz]
> Sent: Tuesday, September 07, 2004 11:44 AM
> To: delphi-l@clexpert.cz
> Subject: Import z Excel
>
> Delam v Delphi import z Excel.
> Zaboha se mi nedari Excel po skonceni importu zavrit.
> Zustane viset v TaskManager.
> Samozrejme tam mam "finally Excel := NULL"
>
> Honza
> ====================================
> = RNDr. Jan Sebelik - HAES
> = Skolici a konzultacni stredisko pro vyvoj SW = www.haes.cz
> = Vojtiskova 321 = 507 81 Lazne Belohrad = tel. 493 792 569
> (mobil 776 347 735) ====================================
>
>
>

Odpovedá: Pavel Malinsky

7. 9. 2004 11:36

> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz] On Behalf Of Jan Sebelik
>
> Delam v Delphi import z Excel.
> Zaboha se mi nedari Excel po skonceni importu zavrit.
> Zustane viset v TaskManager.
> Samozrejme tam mam "finally Excel := NULL"

Ahoj,

a treba takhle: Excel.Quit ?

          S pozdravem a dikem
=====================================
> Pavel Malinsky; malinsky@pmcom.cz <
=====================================
> GSM: 602 652 203 | ICQ: 322015967 <
=====================================



Odpovedá: Petr Brant

7. 9. 2004 11:27

Delal jsem s Excelem pres OLE a matne si vzpominam, ze jsem pouzival snad
Excel.Quit nebo tak neco podobneho. Urcite to nebylo nic podobneho te tve
konstrukci.

RNDr. Petr Brant [brant@dcomm.cz]
http://brant.wz.cz

Delam v Delphi import z Excel.
Zaboha se mi nedari Excel po skonceni importu zavrit.
Zustane viset v TaskManager.
Samozrejme tam mam "finally Excel := NULL"


Odpovedá: Ondrej Kelle

7. 9. 2004 11:31

> Delam v Delphi import z Excel.
> Zaboha se mi nedari Excel po skonceni importu zavrit.
> Zustane viset v TaskManager.
> Samozrejme tam mam "finally Excel := NULL"

Ja tu mam kod na export do Excelu, ktory, pokial viem, funguje:

var
  Excel, Workbook, Worksheet: Variant;
begin
  Excel := CreateOleObject('Excel.Application');
  try
    Excel.SheetsInNewWorkbook := 1;
    Workbook := Excel.Workbooks.Add;
    try
      Worksheet := Workbook.Sheets[1];
      try
        Worksheet.Name := 'Export';

        Worksheet.Cells[1, 1] := 'User name';
        ...

      finally
        Worksheet := Unassigned;
      end;

      Workbook.SaveAs(FileName);
    finally
      Workbook.Close(False);
      Workbook := Unassigned;
    end;
  finally
    Excel.Quit;
    Excel := Unassigned;
  end;
end;

Myslim, ze je dolezite zavolat Workbook.Close a tiez Excel.Quit.
A tiez uvolnit vsetky pouzite referencie (vratane Workbook, Worksheet atd.)
priradenim Unassigned. Aj ked Delphi pre lokalne premenne typu Variant
(varDispatch) myslim generuje implicitny kod, ktory ich uvolni.

HTH
TOndrej


Odpovedá: Ludek ZITA

7. 9. 2004 11:39

 On Behalf Of Jan Sebelik

> Zaboha se mi nedari Excel po skonceni importu zavrit.
> Zustane viset v TaskManager.
> Samozrejme tam mam "finally Excel := NULL"
>
Ahoj.
Ja koncim uspesne Excel takto:

      if not VarIsEmpty(ExcelApp) then
      begin
        ExcelApp.DisplayAlerts := False;
        ExcelApp.Quit;
      end;
      ExcelApp := '';

Ludek


Odpovedá: Lasevic, Martin

7. 9. 2004 11:23

Je zvlastni, ze Excel.Quit mi to vzdy zarvalo na nepodporovanou metodu OLE
objektu.......

> Delal jsem s Excelem pres OLE a matne si vzpominam, ze jsem
> pouzival snad Excel.Quit nebo tak neco podobneho. Urcite to
> nebylo nic podobneho te tve konstrukci.
>
> RNDr. Petr Brant [brant@dcomm.cz]
> http://brant.wz.cz


Odpovedá: Petr Vones

7. 9. 2004 11:43

From: "Jan Sebelik" <honza@haes.cz>
> Delam v Delphi import z Excel.
> Zaboha se mi nedari Excel po skonceni importu zavrit.
> Zustane viset v TaskManager.

Hledal bych nejakou jeho metodu Quit nebo Exit.

Petr Vones


Odpovedá: Petr Brant

7. 9. 2004 11:34

Nedalo mi to, tak jsem ten zdrojak vyhrabal:

var Exc: Variant;

Exc:= CreateOLEObject('Excel.Application');
Exc.DisplayAlerts:= false;
...
except
 Memo.Lines.Add('Nelze spustit MS Excel.');
end;

...a tady likvidace:

if not VarIsEmpty(Exc) then Exc.Quit;

...chodi to doted, funguje to od W98 po XP a na Excelu od 97 do XP.


Zdravim

RNDr. Petr Brant [brant@dcomm.cz]
http://brant.wz.cz


Je zvlastni, ze Excel.Quit mi to vzdy zarvalo na nepodporovanou metodu OLE
objektu.......

> Delal jsem s Excelem pres OLE a matne si vzpominam, ze jsem pouzival
> snad Excel.Quit nebo tak neco podobneho. Urcite to nebylo nic
> podobneho te tve konstrukci.